Optimization Techniques in a Java Just-In-Time Compiler
نویسنده
چکیده
thesis describes the design, implementation, and evaluation of optimization techniques in a Java Just-In-Time (JIT) compiler. These optimization techniques avoid the overhead incurred because of type safety and polymorphism for supporting reusability and safety of programs in the Java language. Consequently, Java can achieve the same runtime performance as the familiar C and C++ languages. The techniques described in the thesis were used in the production system 'IBM Developers Kit. Java Technology Edition', and they have contributed to improving the performance of Java since Java was released. In particular, the optimization technique to reduce the overhead of a virtual method call has been adopted by other Java JIT compilers. Java is an object-oriented language that has features such as platform independency of programs by using a virtual machine, flexibility in programming by using an object-oriented approach and polymorphism, and safety of programs through verification and type safety. However, these feastures also incur runtime overheads. In particular, there are four overheads related to the implementation of the Java language. An overhead related to the implementation of an object-oriented language with polymorphism is shown as Point 1. Overheads related to the implementation of a type safe language are shown as Points 2, 3, and 4. 1. Virtual method calls in a language with a dynamic class loading. 2. Type inclusion tests for objects. 3. Exception checks in references to array elements or instance variables. 4. Order constraints between instructions to ensure the safety of memory references. In the rest of this abstract, I will summarize methods to reduce the above four overheads while describing the outline of the thesis. Chapter 1 describes the motivations and results of our research as described in this thesis. Chapter 2 describes features of the Java language and their implementation problems as the background of our research. Then it describes representative implementations of the Java language runtime environment. Finally, it explains the detailed implementation of the IBM Java Just-In-Time compiler where I implemented the proposed optimization techniques. Chapter 3 describes an optimization technique for virtual method calls. A virtual method call with polymorphism provides flexibility in programming. A virtual method at a given call site call may have several callee methods. Since the polymorphism at a call site prevents the whole program analysis and optimizations from being applied, the compiler examines whether there is no overridden method in the class hierarchy. If there is no overridden method, …
منابع مشابه
OpenJIT—A Reflective Java JIT Compiler
The so-called ‘Open Compilers’ is a technique to incorporate various self-descriptive modules for language customization and optimization based on computational reflection. We apply the open compiler technique to a Java Just-In-Time compiler to develop the OpenJIT compiler, which allows class-specific customization and optimization, fostering research of new compilation techniques such as appli...
متن کاملOpenjit|a Re Blockinective Java Jit Compiler | Short Version for the Oopsla'98 Re Blockinection Workshop |
The so-called `Open Compilers' is a technique to incorporate various self-descriptive modules for language customization and optimization based on computational re ection. We apply the open compiler technique to a Java Just-In-Time compiler to develop the OpenJIT compiler, which allows class-speci c customization and optimization, fostering research of new compilation techniques such as applica...
متن کاملCompiling Java for Embedded Systems
While a major factor in Java’s success is its use of portable bytecodes, we believe it cannot become a mainstream programming language without mainstream implementation techniques. Specifically, an optimizing, ahead-of-time compiler allows much better optimization along with much faster application start-up times than with JIT translators. Cygnus Solutions is writing a Java front-end for the GN...
متن کاملOpenjit|a Reeective J a Va Jit Compiler | Short Version for the Oopsla'98 Reeection Workshop |
The so-called `Open Compilers' is a technique to incorporate various self-descriptive modules for language customization and optimization based on computational re ection. We apply the open compiler technique to a Java Just-In-Time compiler to develop the OpenJIT compiler, which allows class-speci c customization and optimization, fostering research of new compilation techniques such as applica...
متن کاملEvolution of a Java just-in-time compiler for IA-32 platforms
Java just-in-time compiler for IA-32 platforms T. Suganuma T. Ogasawara K. Kawachiya M. Takeuchi K. Ishizaki A. Koseki T. Inagaki T. Yasue M. Kawahito T. Onodera H. Komatsu T. Nakatani Java has gained widespread popularity in the industry, and an efficient Java virtual machine (JVM ) and just-in-time (JIT) compiler are crucial in providing high performance for Java applications. This paper desc...
متن کامل